#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:6031)

#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>

//int my_strlen(const char* str)
//{
//	assert(str != NULL);
//	int count = 0;
//	while (*str != '\0')
//	{
//		count++;
//		str++;
//	}
//	return count;
//}
//
//int main()
//{
//	//char arr[] = "abc";
//	char arr[] = { 'a','b','c' };
//	printf("%d\n", my_strlen(arr));
//
//	return 0;
//}

//void my_strcpy(char* dest, const char* src)
//{
//	assert(dest != NULL);
//	assert(src != NULL);
//
//	while (*dest++ = *src++);
//}
//
//int main()
//{
//	char dest[20] = "#######";
//	char src[] = "Hello World";
//	my_strcpy(dest, src);
//	printf("%s\n", dest);
//
//	return 0;
//}

//char* my_strcat(char* dest, const char* src)
//{
//	char* ret = dest;
//	assert(dest && src);
//
//	while (*dest)
//	{
//		dest++;
//	}
//
//	while (*dest++ = *src++);
//	
//	return ret;
//}
//
//int main()
//{
//	char dest[20] = "Hello \0#######";
//	char src[] = "World";
//	//my_strcat(dest, src);
//	printf("%s\n", my_strcat(dest, src));
//
//	return 0;
//}

//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//		{
//			return 0;
//		}
//		str1++;
//		str2++;
//	}
//
//	/*if (*str1 > *str2)
//	{
//		return 1;
//	}
//	else
//	{
//		return -1;
//	}*/
//
//	return *str1 - *str2;
//}
//
//int main()
//{
//	char* str1 = "Hello";
//	char* str2 = "Hello World";
//
//	printf("%d\n", my_strcmp(str1, str2));
//
//	return 0;
//}

//char* my_strncpy(char* dest, const char* src, size_t n)
//{
//	assert(dest && src);
//
//	char* start = dest;
//	while (n && (*start++ = *src++) )
//	{
//		n--;
//	}
//
//	if (n)
//		while (--n)
//			*start++ = '\0';
//
//	return dest;
//}
//
//int main()
//{
//	char str1[20] = "Hello #######";
//	char str2[] = "World";
//
//	printf("%s\n", my_strncpy(str1, str2, 7));
//
//	return 0;
//}

//int main()
//{
//	char str1[] = "Hello \0##########";
//	char str2[] = "World";
//	strncat(str1, str2, 3);
//
//	printf("%s\n", str1);
//
//	return 0;
//}

//char* my_strstr(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//	const char* s1 = NULL;
//	const char* s2 = NULL;
//	const char* cp = str1;
//
//	if (*str2 == '\0')
//	{
//		return (char*)str1;
//	}
//
//	while (*cp)
//	{
//		s1 = cp;
//		s2 = str2;
//		while (*s1 && *s2 && (*s1 == *s2))
//		{
//			s1++;
//			s2++;
//		}
//		if (*s2 == '\0')
//		{
//			return (char*)cp;
//		}
//		cp++;
//	}
//	return	NULL;
//}
//
//int main()
//{
//	char arr1[] = "abbbcdef";
//	char arr2[] = "bbcd";
//	char* ret = my_strstr(arr1, arr2);
//
//	if (ret == NULL)
//	{
//		printf("找不到。\n");
//	}
//	else
//	{
//		printf("找到了：%s\n", ret);
//	}
//
//	return 0;
//}

//int main()
//{
//	char arr[] = "zpw@bitedu.tech";
//	char* sep = "@.";
//	char tmp[20] = { 0 };
//	strcpy(tmp, arr);
//
//	/*printf("%s\n", strtok(tmp, sep));
//	printf("%s\n", strtok(NULL, sep));
//	printf("%s\n", strtok(NULL, sep));*/
//
//	for (char* ret = strtok(tmp, sep); ret != NULL; ret = strtok(NULL, sep))
//	{
//		printf("%s\n", ret);
//	}
//
//	return 0;
//}

//int main()
//{
//	/*printf("%s\n", strerror(0));
//	printf("%s\n", strerror(1));
//	printf("%s\n", strerror(2));
//	printf("%s\n", strerror(3));
//	printf("%s\n", strerror(4));
//	printf("%s\n", strerror(5));*/
//
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		//printf("%s\n", strerror(errno));
//		perror("fopen");
//		return 1;
//	}
//	//...
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	char ch = 'a';
//	//isdigit	如果是数字字符返回非0，如果不是返回0
//	//int ret = isdigit(ch);
//	int ret = islower(ch);
//	printf("%d\n", ret);
//
//	return 0;
//}

//int main()
//{
//	char arr[20] = { 0 };
//	scanf("%s", arr);
//	int i = 0;
//	while (arr[i] != '\0')
//	{
//		if (isupper(arr[i]))
//		{
//			arr[i] = tolower(arr[i]);
//		}
//		i++;
//	}
//	printf("%s\n", arr);
//	return 0;
//}